#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
using Cephei.QL.Termstructures;
using Cephei.QL;
using Cephei.QL.Times;
namespace Cephei.QL.Termstructures.Yield
{
    /// <summary> 
	/// ! The zero-yield spread at any given date is linearly interpolated between the input data.  \note This term structure will remain linked to the original structure, i.e., any changes in the latter will be reflected in this structure as well.  \ingroup yieldtermstructures
	/// </summary>
    [Guid ("D414F803-ACD2-4adc-A0A3-9E7D7EE4D993"),ComVisible(true)]
	public interface IPiecewiseZeroSpreadedTermStructure : Cephei.QL.Termstructures.Yield.IZeroYieldStructure
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.Times.ICalendar Calendar {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.Times.IDayCounter DayCounter {get;}
        /// <summary> 
		/// 
		/// </summary>
		 DateTime MaxDate {get;}
        /// <summary> 
		/// 
		/// </summary>
		 DateTime ReferenceDate {get;}
        /// <summary> 
		/// 
		/// </summary>
		 UInt32 SettlementDays {get;}
    }   

    /// <summary> 
	/// ! The zero-yield spread at any given date is linearly interpolated between the input data.  \note This term structure will remain linked to the original structure, i.e., any changes in the latter will be reflected in this structure as well.  \ingroup yieldtermstructures Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IPiecewiseZeroSpreadedTermStructure_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    IPiecewiseZeroSpreadedTermStructure Create (Cephei.QL.Termstructures.IYieldTermStructure prm1, Cephei.Core.IVector<Cephei.QL.IQuote> spreads, Cephei.Core.IVector<DateTime> dates, Microsoft.FSharp.Core.FSharpOption<QL.CompoundingEnum> comp, Microsoft.FSharp.Core.FSharpOption<QL.Times.FrequencyEnum> freq, Microsoft.FSharp.Core.FSharpOption<Cephei.QL.Times.IDayCounter> dc);
    }
}

